package sicnu.cs.ich.user.service;

import com.github.pagehelper.PageInfo;
import org.springframework.web.multipart.MultipartFile;
import sicnu.cs.ich.api.common.ResultInfo;
import sicnu.cs.ich.api.common.enums.CertType;
import sicnu.cs.ich.api.domain.dto.CertificationDTO;
import sicnu.cs.ich.api.domain.entity.Certification;
import sicnu.cs.ich.api.domain.form.CertParam;
import sicnu.cs.ich.api.domain.form.CertificateUserForm;

import java.util.List;

/**
 * @author 沈洋 邮箱:1845973183@qq.com
 * @create 2021/11/14-13:19
 **/
public interface ICertService {


    /**
     * 获取用户所有认证信息
     *
     * @param userId 用户id
     * @return
     */
    List<Certification> findAllCert(Integer userId);

    /**
     * 获取用户的机构认证
     *
     * @param userId 用户id
     */
    Certification findCert(Integer userId, CertType certType);

    /**
     * 删除文件
     *
     * @param certId 认证id
     */
    void deleteFile(String certId);

    /**
     * 插入或更新认证信息
     *
     * @param cert 认证信息
     * @return 是否处理成功
     */
    boolean updateOrInsert(Certification cert);

    /**
     * 存放图片信息
     */
    void insertCertFile(String certId, List<MultipartFile> backImage);

    /**
     * 个人认证
     * @return
     */
    ResultInfo<Void> certUser(CertificateUserForm userForm);

    /**
     * 管理员获取认证待处理认证信息
     * @param param 参数
     * @return 认证列表
     */
    PageInfo<Certification> getCertList(CertParam param);

    /**
     * 查询认证详情
     * @param certId 认证id
     */
    CertificationDTO getCertDTO(String certId);

    /**
     * 获取Cert实体
     */
    Certification getCert(String certId);

    /**
     * 驳回认证
     */
    boolean refuseCertification(Certification certification);

    /**
     * 确认认证
     */
    boolean confirmCertification(Certification certification);
}
